/** 编写一个程序，创建一个有两个成员的结构模板：
a．第1个成员是社会保险号，第2个成员是一个有3个成员的结构，第1个成员代表名，第2个成员
代表中间名，第3个成员表示姓。创建并初始化一个内含5个该类型结构的数组。该程序以下面的格式打印
数据：
Dribble, Flossie M. –– 302039823
如果有中间名，只打印它的第1个字母，后面加一个点（.）；如果没有中间名，则不用打印点。编
写一个程序进行打印，把结构数组传递给这个函数。

b．修改a部分，传递结构的值而不是结构的地址。
**/
// #include <stdio.h>
// #include <string.h>

// #define Max 20

// typedef struct
// {
//     char lastname[Max];
//     char midname[Max];
//     char firstname[Max];
// }Name;
// typedef struct
// {
//     int InNum;
//     Name name;
// }Struct;


// /*Dribble, Flossie M. –– 302039823*/
// void printinfo(Struct arr[], int num)
// {
//     for(int i = 0;i < num; i++)
//     {
//         int a = strlen(arr[i].name.midname);
//         if(a > 0)
//         {
//             printf("%s, %s %c. -- %d\n", arr[i].name.lastname, 
//             arr[i].name.firstname, arr[i].name.midname[0], arr[i].InNum);
//         }
//         else
//         {
//             printf("%s, %s -- %d\n", arr[i].name.lastname, arr[i].name.firstname, 
//             arr[i].InNum);
//         }
//     }

// }

// int main(){
//     Struct five[5] = {
//         {302039823, {"Dribble", "Mike", "Flossie"}},
//         {302039824, {"Eribble", "Nike", "Glossie"}},
//         {302039825, {"Fribble", "Oike", "Hlossie"}},
//         {302039826, {"Gribble", "Pike", "Ilossie"}},
//         {302039827, {"Hribble", "", "Jlossie"}},
//     };

//     printinfo(five, 5);
    
//     return 0;
// }

// #include <stdio.h>
// #include <string.h>

// #define Max 20

// typedef struct
// {
//     char lastname[Max];
//     char midname[Max];
//     char firstname[Max];
// }Name;
// typedef struct
// {
//     int InNum;
//     Name name;
// }Struct;


// /*Dribble, Flossie M. –– 302039823*/
// void printinfo(Struct five, int num)
// {
//     for(int i = 0;i < num; i++)
//     {
//         int a = strlen(five.name.midname);
//         if(a > 0)
//         {
//             printf("%s, %s %c. -- %d\n", five.name.lastname, 
//             five.name.firstname, five.name.midname[0], five.InNum);
//         }
//         else
//         {
//             printf("%s, %s -- %d\n", five.name.lastname, five.name.firstname, 
//             five.InNum);
//         }
//     }

// }

// int main(){
//     Struct five[5] = {
//         {302039823, {"Dribble", "Mike", "Flossie"}},
//         {302039824, {"Eribble", "Nike", "Glossie"}},
//         {302039825, {"Fribble", "Oike", "Hlossie"}},
//         {302039826, {"Gribble", "Pike", "Ilossie"}},
//         {302039827, {"Hribble", "", "Jlossie"}},
//     };

//     printinfo(five[0], 5);
    
//     return 0;
// }

#include <stdio.h>
#include <string.h>

#define Max 20


struct two
{
    int InNum;
    struct
    {
    char lastname[Max];
    char midname[Max];
    char firstname[Max];
    };
}Struct[5] = {
        {302039823, "Dribble", "Mike", "Flossie"},
        {302039824, "Eribble", "Nike", "Glossie"},
        {302039825, "Fribble", "Oike", "Hlossie"},
        {302039826, "Gribble", "Pike", "Ilossie"},
        {302039827, "Hribble", "", "Jlossie"}
    };

/*Dribble, Flossie M. –– 302039823*/
void printinfo(struct two five, int num)
{
    for(int i = 0;i < num; i++)
    {
        int a = strlen(five.midname);
        if(a > 0)
        {
            printf("%s, %s %c. -- %d\n", five.lastname, 
            five.firstname, five.midname[0], five.InNum);
        }
        else
        {
            printf("%s, %s -- %d\n", five.lastname, five.firstname, 
            five.InNum);
        }
    }

}

int main(){

    printinfo(Struct[0], 5);
    
    return 0;
}

